1367D - Task On The Board - CodeForces Solution


constructive algorithms greedy implementation sortings *1800

Please click on ads to support us..

Python Code:

for i in range(int(input())):
  s=input()
  n=int(input())
  A=list(map(int,input().split()))
  D,L=dict(),[]
  for j in range(len(s)):
    if s[j] in D:
      D[s[j]]+=1
    else:
      D[s[j]]=1
      L.append(s[j])
  L.sort(reverse=True)
  N=[None for j in range(n)]
  G=[]
  pos=0
  count=0
  while count<n:
    S=[]
    for j in range(n):
      diff=0
      for e in G:
        diff+=abs(e-j)
      if diff==A[j]:
        S.append(j)
    S=list(set(S).difference(set(G)))
    while len(S)>D[L[pos]]:
      pos+=1
    for j in S:
      N[j]=L[pos]
      G.append(j)
      count+=1
    pos+=1
  ans=''
  for j in N:
    ans+=j
  print(ans)


Comments

Submit
0 Comments
More Questions

1711D - Rain
534A - Exam
1472A - Cards for Friends
315A - Sereja and Bottles
1697C - awoo's Favorite Problem
165A - Supercentral Point
1493A - Anti-knapsack
1493B - Planet Lapituletti
747B - Mammoth's Genome Decoding
1591C - Minimize Distance
1182B - Plus from Picture
1674B - Dictionary
1426C - Increase and Copy
520C - DNA Alignment
767A - Snacktower
1365A - Matrix Game
714B - Filya and Homework
31A - Worms Evolution
1691A - Beat The Odds
433B - Kuriyama Mirai's Stones
892A - Greed
32A - Reconnaissance
1236D - Alice and the Doll
1207B - Square Filling
1676D - X-Sum
1679A - AvtoBus
1549A - Gregor and Cryptography
918C - The Monster
4B - Before an Exam
545B - Equidistant String